package com.dingding.manager.modules.system.dao.impl;

import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import com.dingding.manager.common.beans.carinfo.CarBrandInfo;
import com.dingding.manager.common.beans.carinfo.CarModelInfo;
import com.dingding.manager.common.dao.Db;
import com.dingding.manager.core.util.ToolUtil;
import com.dingding.manager.modules.system.dao.CarTypeDao;
import com.dingding.manager.modules.system.sql.CarTypeSQL;

/**
 * 
 * @Description: 车辆品牌获取
 * @author haoxiaojun
 * @date 2016年12月9日 下午6:10:42
 * @since V 2.5.7
 */
@Component("carTypeDao")
public class CarTypeDaoImpl implements CarTypeDao {

	private Logger logger = LoggerFactory.getLogger(getClass());

	/**
	 * 
	 * @Description: 获取所有车辆品牌
	 * @author haoxiaojun
	 * @return RespResult<CarBrandInfo>
	 * @date 2016年12月9日 下午6:11:06
	 * @since V 2.5.7
	 */
	@Transactional(readOnly = true)
	public List<CarBrandInfo> getCarBrand() {

		String sql = CarTypeSQL.GET_ALL_CAR_BRAND;
		List<CarBrandInfo> list = Db.querySqlList(CarBrandInfo.class, sql);
		return list;
	}

	/**
	 * 
	 * @Description: 根据品牌Id获取该品牌下的车型
	 * @author haoxiaojun
	 * @return RespResult<CarModelInfo>
	 * @date 2016年12月9日 下午6:11:39
	 * @since V 2.5.7
	 */
	@Transactional(readOnly = true)
	public List<CarModelInfo> getCarModel(Integer id) {

		if (ToolUtil.isEmpty(id)) {
			return null;
		}

		String sqlById = CarTypeSQL.GET_CAR_MODEL_BY_ID;
		StringBuffer sqlbf = new StringBuffer(sqlById);
		sqlbf.append(" and a.id = ? ");
		String sql = sqlbf.toString();
		return Db.querySqlList(CarModelInfo.class, sql, id);
	}

	/**
	* 
	* @Description: 根据关键字模糊查询车辆品牌
	* @author haoxiaojun 
	* @date 2016年12月14日 下午4:03:45
	* @since V 2.5.7
	*/
	@Transactional(readOnly = true)
	public List<CarBrandInfo> getCarBrandByFirst(String keys) {
		
		String sqlByKeys = CarTypeSQL.GET_CAR_VRAND_BY_KEYS;
		StringBuffer sqlbf = new StringBuffer(sqlByKeys);
		if (ToolUtil.isNotEmpty(keys)) {
			sqlbf.append("AND bfirstletter LIKE '" + keys + "%' OR NAME LIKE '" + keys + "%' ORDER BY bfirstletter");
		}
		String sql = sqlbf.toString();
		return Db.querySqlList(CarBrandInfo.class, sql, keys);
	}

}
